﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DAO;
using System.Collections;
using DTO;
using BUS;

namespace QLKS
{
    public partial class frmLapPhieuThuePhong : Form
    {
        public frmLapPhieuThuePhong()
        {
            InitializeComponent();
        }

        private void LoadListview()
        {
            lvKhachHang.Items.Clear();

            DataTable dt = KhachHangBUS.GetAll();

            foreach (DataRow dr in dt.Rows)
            {
                ListViewItem lv = new ListViewItem(dr["MaKhachHang"].ToString());

                for (int i = 1; i < dt.Columns.Count; i++)
                {
                    lv.SubItems.Add(dr[i].ToString());
                }
                lvKhachHang.Items.Add(lv);
            }

            txtMaPhong.Enabled = false;
            txtDonGia.Enabled = false;
            //LoadListview();
            DataTable dt1 = LoaiPhongDAO.LayLoaiPhong();
            foreach (DataRow dr1 in dt1.Rows)
            {
                DataTable dT = PhongDAO.PhongTheoMaLoaiPhong(int.Parse(dr1["MaLoaiPhong"].ToString()));
                if (dT.Rows.Count > 0)
                {
                    cbbLoaiPhong.Items.Add(dr1[0]);
                }
            }
            cbbLoaiPhong.Text = dt1.Rows[0].ItemArray[0].ToString();

            DataTable dt2 = PhongDAO.PhongTheoTen(cbbTenPhong.Text);
            txtMaPhong.Text = dt2.Rows[0].ItemArray[0].ToString();

            DataTable dt3 = LoaiPhongDAO.LoaiPhongTheoTen(cbbLoaiPhong.Text);
            txtDonGia.Text = dt3.Rows[0].ItemArray[3].ToString();

            dtpNgayBatDau.Text = DateTime.Now.ToShortDateString(); 
        }
        private void frmLapPhieuThuePhong_Load(object sender, EventArgs e)
        {
            //txtMaPhong.Enabled = false;
            //txtDonGia.Enabled = false;
            LoadListview();
            //DataTable dt1 = LoaiPhongDAO.LayLoaiPhong();
            //foreach (DataRow dr1 in dt1.Rows)
            //{
            //    DataTable dT = PhongDAO.PhongTheoMaLoaiPhong(int.Parse(dr1["MaLoaiPhong"].ToString()));
            //    if (dT.Rows.Count > 0)
            //    {
            //        cbbLoaiPhong.Items.Add(dr1[0]);
            //    }
            //}
            //cbbLoaiPhong.Text = dt1.Rows[0].ItemArray[0].ToString();

            //DataTable dt2 = PhongDAO.PhongTheoTen(cbbTenPhong.Text);
            //txtMaPhong.Text = dt2.Rows[0].ItemArray[0].ToString();

            //DataTable dt3 = LoaiPhongDAO.LoaiPhongTheoTen(cbbLoaiPhong.Text);
            //txtDonGia.Text = dt3.Rows[0].ItemArray[3].ToString();

            //dtpNgayBatDau.Text = DateTime.Now.ToShortDateString();  
        }
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnLapPhieuThue_Click(object sender, EventArgs e)
        {
            if (cbbTenPhong.SelectedIndex < 0)
            {
                MessageBox.Show("Tên phòng này không tồn tại", "Thông báo");
                return;
            }
            if (cbbLoaiPhong.SelectedIndex < 0)
            {
                MessageBox.Show("Loại phòng này không tồn tại", "Thông báo");
                return;
            }
            if (dtpNgayBatDau.Text == "" || dtpNgayKetThuc.Text == "")
            {
                MessageBox.Show("Vui lòng điền đủ thông tin");
                return;
            }
            else
            {
                DateTime dt1 = Convert.ToDateTime(dtpNgayBatDau.Text);
                DateTime dt2 = Convert.ToDateTime(dtpNgayKetThuc.Text);
                TimeSpan dt3 = dt2 - dt1;
                if (dt3.TotalDays <= 0)
                {
                    MessageBox.Show("Ngày kết thúc phải sau ngày bắt đầu");
                    return;
                }
            }
            if (lvKhachHang.SelectedIndices.Count > 0)
            {
                DataTable dt5 = ThamSoDAO.GetAll();
                int sokhachtheodongia = int.Parse(dt5.Rows[0].ItemArray[0].ToString());

                DataTable dt3 = LoaiPhongDAO.LoaiPhongTheoTen(cbbLoaiPhong.Text);
                int sokhachtoida = int.Parse(dt3.Rows[0].ItemArray[2].ToString());
                int sokhach = lvKhachHang.SelectedItems.Count;
                if (sokhach > sokhachtoida)
                {
                    MessageBox.Show("Phòng chỉ dành cho " + sokhachtoida + " người");
                    return;
                }

                ArrayList arrLoaiKhach = new ArrayList();
                ArrayList arr = new ArrayList();
                foreach (ListViewItem item in lvKhachHang.SelectedItems)
                {
                    int ma = int.Parse(item.SubItems[0].Text);
                    DataTable dt = KhachHangBUS.GetTheoMa(ma);
                    int flag = 0;
                    for (int i = 0; i < arrLoaiKhach.Count; i++)
                    {
                        int a = int.Parse(arrLoaiKhach[i].ToString());
                        int b = int.Parse(dt.Rows[0].ItemArray[0].ToString());
                        if (a == b)
                        {
                            flag = 1;
                            break;
                        }
                    }
                    if (flag == 0)
                    {
                        arrLoaiKhach.Add(dt.Rows[0].ItemArray[0].ToString());
                    }
                    arr.Add(ma);
                }

                DateTime start_date = DateTime.Parse(dtpNgayBatDau.Text);
                DateTime end_date = DateTime.Parse(dtpNgayKetThuc.Text);
                TimeSpan span = end_date.Subtract(start_date);

                DataTable dt1 = PhieuThuePhongDAO.GetAll();
                PhieuThuePhongDTO pt = new PhieuThuePhongDTO();
                pt.MaPhong = int.Parse(txtMaPhong.Text);
                pt.DonGia = float.Parse(txtDonGia.Text);
                pt.SoNgayThue = span.Days;
                pt.NgayThuePhong =DateTime.Parse(dtpNgayBatDau.Text) ; 
                pt.NgayKetThuc = DateTime.Parse(dtpNgayKetThuc.Text);

                if (sokhach > sokhachtheodongia)
                {
                    DataTable dt4 = PhuThuDAO.LayTyLePhuThu(sokhach);
                    float tyle = float.Parse(dt4.Rows[0].ItemArray[2].ToString());
                    pt.ThanhTien = (pt.DonGia * pt.SoNgayThue) + ((pt.DonGia * pt.SoNgayThue) * tyle);
                    for (int i = 0; i < arrLoaiKhach.Count; i++)
                    {
                        DataTable dt6 = LoaiKhachHangDAO.HeSoLoaiKhachTheoMaLoai(int.Parse(arrLoaiKhach[i].ToString()));
                        DataRow dr6 = dt6.Rows[0];
                        pt.ThanhTien = pt.ThanhTien * float.Parse(dr6["HeSoLoaiKhach"].ToString());
                    }
                }
                if (sokhach <= sokhachtheodongia)
                {
                    pt.ThanhTien = pt.DonGia * pt.SoNgayThue;
                    for (int i = 0; i < arrLoaiKhach.Count; i++)
                    {
                        DataTable dt6 = LoaiKhachHangDAO.HeSoLoaiKhachTheoMaLoai(int.Parse(arrLoaiKhach[i].ToString()));
                        DataRow dr6 = dt6.Rows[0];
                        pt.ThanhTien = pt.ThanhTien * float.Parse(dr6["HeSoLoaiKhach"].ToString());
                    }
                }

                if (MessageBox.Show("Bạn có muốn lập phiêu thuê phòng?", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    PhieuThuePhongBUS.InsertPhieuThuePhong(pt);
                    PhongBUS.UpdateTinhTrangPhong(pt.MaPhong, 1);
                }
                else
                {
                    return;
                }
                DataTable dt7 = PhieuThuePhongDAO.LayMaxMaPhieuThue();
                for (int j = 0; j < arr.Count; j++)
                {
                    DataTable dt2 = ChiTietPhieuThueBUS.GetAll();
                    ChiTietPhieuThueDTO ctpt = new ChiTietPhieuThueDTO();
                    ctpt.MaPhieuThue = int.Parse(dt7.Rows[0].ItemArray[0].ToString());
                    ctpt.MaKhachHang = int.Parse(arr[j].ToString());
                    ChiTietPhieuThueBUS.InsertChiTieuPhieuThue(ctpt);
                }
                MessageBox.Show("Lập phiếu thành công", "Thông báo");
            }
            else
            {
                MessageBox.Show("Chọn khách hàng trước khi lập phiếu", "Lập phiếu thuê phòng");
            }
        }
        private void cbbLoaiPhong_SelectedIndexChanged(object sender, EventArgs e)
        {
            cbbTenPhong.Items.Clear();
            DataTable dt = PhongDAO.PhongTheoLoai(cbbLoaiPhong.Text);
            foreach (DataRow dr in dt.Rows)
            {
                cbbTenPhong.Items.Add(dr["TenPhong"].ToString());
            }
            cbbTenPhong.Text = dt.Rows[0].ItemArray[5].ToString();
            DataTable dt3 = LoaiPhongDAO.LoaiPhongTheoTen(cbbLoaiPhong.Text);
            txtDonGia.Text = dt3.Rows[0].ItemArray[3].ToString();
        }
        private void cbbTenPhong_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataTable dt2 = PhongDAO.PhongTheoTen(cbbTenPhong.Text);
            txtMaPhong.Text = dt2.Rows[0].ItemArray[0].ToString();
        }

        private void btnTaoTaiKhoan_Click(object sender, EventArgs e)
        {
            
        }
    }
}
